// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

//------------------------------------------------------------------------------
// <auto-generated>
//     Types declaration for SharpDX.DirectInput namespace.
//     This code was generated by a tool.
//     Date : 28/03/2015 21:51:13
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace SharpDX.DirectInput {

// Disable warning : XML comment is not placed on a valid language element
#pragma warning disable 419
#pragma warning disable 1587
#pragma warning disable 1574
    /// <summary>	
    /// <p>Applications use the methods of the <see cref="SharpDX.DirectInput.Device"/> interface to gain and release access to Microsoft DirectInput devices, manage device properties and information, set behavior, perform initialization, create and play force-feedback effects, and invoke a device's control panel.</p>IDirectInputDevice8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td><see cref="SharpDX.DirectInput.Device.Acquire"/> </td><td>Obtains access to the input device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.BuildActionMap"/> </td><td>Builds an action map for the device and retrieves information about it.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.CreateEffect"/> </td><td>Creates and initializes an instance of an effect identified by the effect globally unique identifier (<see cref="System.Guid"/>).	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.EnumCreatedEffectObjects"/> </td><td>Enumerates all the currently created effects for this device. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.EnumEffects"/> </td><td>Enumerates all the effects supported by the force-feedback system on the device. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.EnumEffectsInFile"/> </td><td>Enumerates all the effects in a file created by the Force Editor utility or another application using the same file format.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.EnumObjects"/> </td><td>Enumerates the input and output objects available on a device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.Escape"/> </td><td>Sends a hardware-specific command to the force-feedback driver.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetCapabilities"/> </td><td>Obtains the capabilities of the DirectInputDevice object.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetDeviceData"/> </td><td>Retrieves buffered data from the device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetInformation"/> </td><td>Obtains information about the device's identity.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetDeviceState"/> </td><td>Retrieves immediate data from the device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetEffectInfo"/> </td><td>Obtains information about an effect.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetForceFeedbackState"/> </td><td>Retrieves the state of the device's force-feedback system. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetImageInfo"/> </td><td>Retrieves information about a device image for use in a configuration property sheet.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetObjectInfo"/> </td><td>Retrieves information about a device object, such as a button or axis.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.GetProperty"/> </td><td>Retrieves information about the input device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.Initialize"/> </td><td>Initializes a DirectInputDevice object.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.Poll"/> </td><td>Retrieves data from polled objects on a DirectInput device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.RunControlPanel"/> </td><td>Runs the DirectInput control panel associated with this device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SendDeviceData"/> </td><td>Sends data to a device that accepts output. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SendForceFeedbackCommand"/> </td><td>Sends a command to the device's force-feedback system.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SetActionMap"/> </td><td>Sets the data format for a device and maps application-defined actions to device objects.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SetCooperativeLevel"/> </td><td>Establishes the cooperative level for this instance of the device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SetDataFormat"/> </td><td>Sets the data format for the DirectInput device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SetEventNotification"/> </td><td>Specifies an event that is to be set when the device state changes.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.SetProperty"/> </td><td>Sets properties that define the device behavior.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.Unacquire"/> </td><td>Releases access to the device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.Device.WriteEffectToFile"/> </td><td>Saves information about one or more force-feedback effects to a file that can be read by using EnumEffectsInFile.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <remarks>	
    /// <p>The <see cref="SharpDX.DirectInput.Device"/> interface is obtained by using the <see cref="SharpDX.DirectInput.DirectInput.CreateDevice"/> method. For an example, see Creating a DirectInput Device.</p> <p><see cref="SharpDX.DirectInput.Device"/> supersedes the IDirectInputDevice, IDirectInputDevice2, and IDirectInputDevice7 interfaces used in previous versions of Microsoft DirectX, but does not inherit from them. Methods that share names with those from older interfaces perform similar services, but may not have exactly the same functionality or behavior. You cannot obtain the earlier interfaces by using QueryInterface.</p> <p>The LPDIRECTINPUTDEVICE8 type is defined as a reference to the <see cref="SharpDX.DirectInput.Device"/> interface:</p> <pre> typedef struct <see cref="SharpDX.DirectInput.Device"/>    *LPDIRECTINPUTDEVICE8;	
    /// </pre>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W']/*"/>	
    /// <msdn-id>ee417816</msdn-id>	
    /// <unmanaged>IDirectInputDevice8W</unmanaged>	
    /// <unmanaged-short>IDirectInputDevice8W</unmanaged-short>	
    [Guid("54d41081-dc15-4833-a41b-748f73a38179")]
    public partial class Device : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectInput.Device"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Device(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectInput.Device"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectInput.Device(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectInput.Device(nativePointer);
		}
        
        
        /// <summary>	
        /// Obtains the capabilities of the DirectInputDevice object.	
        /// </summary>	
        /// <remarks>	
        /// <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVCAPS_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVCAPS_DX3). </p> <p>The number of objects returned in the <see cref="SharpDX.DirectInput.Capabilities"/> structure is the maximum number of objects that could be enumerated.  However, all of these objects are not necessarily returned during a call to <see cref="SharpDX.DirectInput.Device.EnumObjects"/>.  </p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetCapabilities']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getcapabilities</msdn-id>	
        /// <unmanaged>GetCapabilities</unmanaged>	
        /// <unmanaged-short>GetCapabilities</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetCapabilities([Out] DIDEVCAPS* arg0)</unmanaged>
        public SharpDX.DirectInput.Capabilities Capabilities {
                get { SharpDX.DirectInput.Capabilities __output__; GetCapabilities(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// Obtains information about the device's identity.	
        /// </summary>	
        /// <remarks>	
        /// <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVICEINSTANCE_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVICEINSTANCE_DX3).</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetDeviceInfo']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdeviceinfo</msdn-id>	
        /// <unmanaged>GetDeviceInfo</unmanaged>	
        /// <unmanaged-short>GetDeviceInfo</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceInfo([Out] DIDEVICEINSTANCEW* arg0)</unmanaged>
        public SharpDX.DirectInput.DeviceInstance Information {
                get { SharpDX.DirectInput.DeviceInstance __output__; GetInformation(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// Obtains the capabilities of the DirectInputDevice object.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a <see cref="SharpDX.DirectInput.Capabilities"/> structure to be filled with the device capabilities. The dwSize member of this structure must be initialized before calling this method.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, E_POINTER.</p></returns>	
        /// <remarks>	
        /// <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVCAPS_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVCAPS_DX3). </p> <p>The number of objects returned in the <see cref="SharpDX.DirectInput.Capabilities"/> structure is the maximum number of objects that could be enumerated.  However, all of these objects are not necessarily returned during a call to <see cref="SharpDX.DirectInput.Device.EnumObjects"/>.  </p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetCapabilities']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getcapabilities</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetCapabilities([Out] DIDEVCAPS* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetCapabilities</unmanaged-short>	
        internal void GetCapabilities(out SharpDX.DirectInput.Capabilities arg0) {
            unsafe {
                var arg0_ = SharpDX.DirectInput.Capabilities.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_,((void**)(*(void**)_nativePointer))[3]);		
                arg0 = new SharpDX.DirectInput.Capabilities();
                arg0.__MarshalFrom(ref arg0_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Enumerates the input and output objects available on a device.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a callback function that receives DirectInputDevice objects. DirectInput provides a prototype of this function as DIEnumDeviceObjectsCallback.  </dd></param>	
        /// <param name="arg1"><dd> Reference data (context) for callback.  </dd></param>	
        /// <param name="arg2"><dd> Flags that specify the types of object to be enumerated. Each of the following values restricts the enumeration to objects of the described type: <dl> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.AbsoluteAxis"/></dt> <dd>An absolute axis. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Alias"/></dt> <dd>Controls identified by a Human Interface Device (HID) usage alias. This flag applies only to HID-compliant USB devices. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.All"/></dt> <dd>All objects. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Axis"/></dt> <dd>An axis, either absolute or relative. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Button"/></dt> <dd>A push button or a toggle button. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Collection"/></dt> <dd>A HID link collection. HID link collections do not generate data of their own. </dd> <dt>DIDFT_ENUMCOLLECTION(n)</dt> <dd>An object that belongs to HID link collection number n. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator"/></dt> <dd>An object that contains a force-feedback actuator. In other words, forces can be applied to this object.</dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger"/></dt> <dd>An object that can be used to trigger force-feedback effects. </dd> <dt>DIDFT_NOCOLLECTION</dt> <dd>An object that does not belong to any HID link collection; in other words, an object for which the wCollectionNumber member of the <see cref="SharpDX.DirectInput.DeviceObjectInstance"/> structure is 0. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.NoData"/></dt> <dd>An object that does not generate data. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.Output"/></dt> <dd>An object that supports output. For details, see Remarks in <see cref="SharpDX.DirectInput.Device.SendDeviceData"/>. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.PointOfViewController"/></dt> <dd>A point-of-view controller. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.PushButton"/></dt> <dd>A push button. A push button is reported as down when the user presses it, and as up when the user releases it. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.RelativeAxis"/></dt> <dd>A relative axis. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ToggleButton"/></dt> <dd>A toggle button. A toggle button is reported as down when the user presses it and remains so until the user presses the button a second time. </dd> <dt><see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.VendorDefined"/></dt> <dd>An object of a type defined by the manufacturer. </dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values:.</p><see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/><see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/></returns>	
        /// <remarks>	
        /// <p>The <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator"/> and <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger"/> flags in the  dwFlags parameter restrict enumeration to objects that meet all the criteria defined by the included flags. For all the other flags, an object is enumerated if it meets the criterion defined by any included flag in this category. For example, (<see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackActuator"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger"/>) restricts enumeration to force-feedback trigger objects, and (<see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ForceFeedbackEffectTrigger"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.ToggleButton"/> | <see cref="SharpDX.DirectInput.DeviceObjectTypeFlags.PushButton"/>) restricts enumeration to buttons of any kind that can be used as effect triggers.</p> <p>Applications should not rely on this method to determine whether certain keyboard keys or indicator lights are present, as these objects might be enumerated even though they are not present. Although the basic set of available objects can be determined from the device subtype, there is no reliable way of determining whether extra objects such as the menu key are available.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::EnumObjects']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.enumobjects</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::EnumObjects([In] __function__stdcall* arg0,[In] void* arg1,[In] unsigned int arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::EnumObjects</unmanaged-short>	
        internal void EnumObjects(SharpDX.FunctionCallback arg0, System.IntPtr arg1, int arg2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, (void*)arg1, arg2,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves information about the input device.	
        /// </summary>	
        /// <param name="arg0"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref="System.Guid"/>) identifying the property to be retrieved. This can be one of the predefined values or a reference to a <see cref="System.Guid"/> that identifies the property. The following properties are predefined for an input device.  <dl> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Appdata"/></dt> <dd>Retrieves the application-defined value associated with an in-game action, as a  <see cref="SharpDX.DirectInput.PropertyPointer"/>.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Autocenter"/></dt> <dd>Determines whether device objects are self centering. The value returned can be DIPROPAUTOCENTER_OFF or DIPROPAUTOCENTER_ON. See <see cref="SharpDX.DirectInput.Device.SetProperty"/> for more information.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Axismode"/></dt> <dd>Retrieves the axis mode. The retrieved value can be <see cref="SharpDX.DirectInput.DeviceAxisMode.Absolute"/> or <see cref="SharpDX.DirectInput.DeviceAxisMode.Relative"/>.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.BufferSize"/></dt> <dd>Retrieves the input buffer size. The buffer size determines the amount of data that the buffer can hold between calls to the <see cref="SharpDX.DirectInput.Device.GetDeviceData"/> method before data is lost. You can set this value to 0 to indicate that the application does not read buffered data from the device. If the buffer size in the dwData member of the <see cref="SharpDX.DirectInput.PropertyInt"/> structure is too large for the device to support it, then the largest possible buffer size is set.  However, this property always returns the buffer size set using the <see cref="SharpDX.DirectInput.Device.SetProperty"/> method, even if the buffer cannot be supported because it is too large.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Calibration"/></dt> <dd><p>Predefined property that allows the application to access the information that DirectInput uses to manipulate axes that require calibration. This property exists primarily for applications of the control panel type. Normal applications should not need to deal with calibration information.</p> <p>You can access the calibration mode property for a particular axis by setting the dwHow member of the <see cref="SharpDX.DirectInput.PropertyHeader"/> structure to <see cref="SharpDX.DirectInput.PropertyHowType.Byid"/> or to <see cref="SharpDX.DirectInput.PropertyHowType.Byoffset"/> and setting the dwObj member to the object ID or offset, respectively. </p> <p>Control panel applications that set new calibration data must also invoke the IDirectInputJoyConfig::SendNotify method to notify other applications of the change in calibration. For more information about IDirectInputJoyConfig::SendNotify, see the DirectInput Driver Development Kit (DDK). </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Calibrationmode"/></dt> <dd>For use by device drivers; not used by applications.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Cpoints"/></dt> <dd>This property is unsupported. Retrieves calibration points used for the adjustment of incoming raw data as a DIPROPCPOINTS structure.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Deadzone"/></dt> <dd>Retrieves a value for the dead zone of a joystick, in the range from 0 through 10,000, where 0 indicates that there is no dead zone, 5,000 indicates that the dead zone extends over 50 percent of the physical range of the axis on both sides of center, and 10,000 indicates that the entire physical range of the axis is dead. When the axis is within the dead zone, it is reported as being at the center of its range.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Ffgain"/></dt> <dd>Retrieves the gain of the device. This property always returns <see cref="SharpDX.DirectInput.ResultCode.Ok"/> even if the device does not support force feedback.  See <see cref="SharpDX.DirectInput.Device.SetProperty"/> for more information.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Ffload"/></dt> <dd>Retrieves the memory load for the device. This setting applies to the entire device, rather than to any particular object, so the  dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. The retrieved value is in the range from 0 through 100, indicating the percentage of device memory in use. The device must be acquired in exclusive mode. If it is not, the method will fail with a return value of <see cref="SharpDX.DirectInput.ResultCode.NotExclusiveAcquired"/>.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.GetPortdisplayname"/></dt> <dd>Retrieves the human-readable display name of the port to which this device is connected. Not generally used by applications. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Granularity"/></dt> <dd>Retrieves the input granularity. Granularity represents the smallest distance over which the object reports movement. Most axis objects have a granularity of one; that is, all values are possible. Some axes have a larger granularity. For example, the wheel axis on a mouse can have a granularity of 20; that is, all reported changes in position are multiples of 20. In other words, when the user turns the wheel slowly, the device reports a position of 0, then 20, then 40, and so on. This is a read-only property.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Guidandpath"/></dt> <dd>Retrieves the class <see cref="System.Guid"/> and device interface (path) for the device. This property lets advanced applications perform operations on a human interface device that are not supported by DirectInput. For more information, see the <see cref="SharpDX.DirectInput.PropertyGuidAndPath"/> structure.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.InstanceName"/></dt> <dd>Retrieves the friendly instance name of the device. For more information, see <see cref="SharpDX.DirectInput.Device.SetProperty"/>.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Joystickid"/></dt> <dd>Retrieves the instance number of a joystick. This property is not implemented for the mouse or keyboard.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Keyname"/></dt> <dd>Retrieves the localized key name for a keyboard key, as a <see cref="SharpDX.DirectInput.PropertyString"/>. Using this property on devices other than a keyboard will return unexpected names. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.LogicalRange"/></dt> <dd>Retrieves the range of the raw data returned for axes on a human interface device. Devices can return negative values.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Physicalrange"/></dt> <dd>Retrieves the range of data for axes as suggested by the manufacturer of a human interface device. Values can be negative. Normally DirectInput returns values from 0 through 0xFFFF, but the range can be made to conform to the manufacturer's suggested range by using <see cref="SharpDX.DirectInput.PropertyGuids.Range"/>.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Productname"/></dt> <dd>Retrieves the friendly product name of the device. For more information, see <see cref="SharpDX.DirectInput.Device.SetProperty"/>.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Range"/></dt> <dd>Retrieves the range of values an object can possibly report. For some devices, this is a read-only property.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Saturation"/></dt> <dd>Retrieves a value for the saturation zones of a joystick, in the range from 0 through 10,000. The saturation level is the point at which the axis is considered to be at its most extreme position. For example, if the saturation level is set to 9,500, the axis reaches the extreme of its range when it has moved 95 percent of the physical distance from its center position (or from the dead zone).</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Scancode"/></dt> <dd>Retrieves the scan code for a keyboard key, as a <see cref="SharpDX.DirectInput.PropertyInt"/>. If successful, <see cref="SharpDX.Result.Ok"/> is returned.  E_FAIL is returned if the property cannot resolve specialized keys on USB keyboards because they do not exist in scan code form.   For all other failures, E_INVALIDARG is returned.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Typename"/></dt> <dd>Predefined property that retrieves the type name of a device. For most game controllers, this is the registry key name under REGSTR_PATH_JOYOEM from which static device settings can be retrieved, but predefined joystick types have special names consisting of a number sign (&amp;Sharp;) followed by a character dependent on the type. This value might not be available for all devices.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Username"/></dt> <dd>Retrieves the user name for a user currently assigned to a device, as a <see cref="SharpDX.DirectInput.PropertyString"/>. User names are set by calling <see cref="SharpDX.DirectInput.Device.SetActionMap"/>. If no user name is set, the method returns S_FALSE.</dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Vidpid"/></dt> <dd>Read-only device property that retrieves the vendor identity (ID) and product ID of a HID device. This property is of type <see cref="SharpDX.DirectInput.PropertyInt"/> and contains both values. These two WORD values are combined in the dwData member of the <see cref="SharpDX.DirectInput.PropertyInt"/> structure.  See Examples.  This property applies to the entire device, rather than to any particular object, so the dwHow member of the <see cref="SharpDX.DirectInput.PropertyHeader"/> structure must be set to <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>.</dd> </dl> </dd></param>	
        /// <param name="arg1"><dd> Address of the <see cref="SharpDX.DirectInput.PropertyHeader"/> portion of a larger property-dependent structure that contains the <see cref="SharpDX.DirectInput.PropertyHeader"/> structure as a member. The following structures are used for properties: <ul> <li><p><see cref="SharpDX.DirectInput.PropertyInt"/> is used for properties represented by a single numerical value.</p></li> <li><p><see cref="SharpDX.DirectInput.PropertyGuidAndPath"/> is used for <see cref="SharpDX.DirectInput.PropertyGuids.Guidandpath"/>.</p></li> <li><p><see cref="SharpDX.DirectInput.PropertyRange"/> is used for properties represented by a pair of numerical values. Currently, the only such property is <see cref="SharpDX.DirectInput.PropertyGuids.Range"/>.</p></li> <li><p><see cref="SharpDX.DirectInput.PropertyString"/> is used for string properties.</p></li></ul> </dd></param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetProperty']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getproperty</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetProperty([In] const void&amp; arg0,[In] void* arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetProperty</unmanaged-short>	
        internal void GetProperty(System.IntPtr arg0, System.IntPtr arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, (void*)arg1,((void**)(*(void**)_nativePointer))[5]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Sets properties that define the device behavior. These properties include input buffer size and axis mode.	
        /// </summary>	
        /// <param name="arg0"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref="System.Guid"/>) identifying the property to be set. This can be one of the predefined values, or a reference to a <see cref="System.Guid"/> that identifies the property. The following property values are predefined for an input device:  <dl> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Appdata"/></dt> <dd>Sets the application-defined value associated with an in-game action, as a  <see cref="SharpDX.DirectInput.PropertyPointer"/>. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Autocenter"/></dt> <dd><p>Specifies whether device objects are self centering. This setting applies to the entire device, rather than to any particular object, so the dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>.</p> <p>The dwData member can be one of the following values. </p> <p>DIPROPAUTOCENTER_OFF: The device should not automatically center when the user releases the device. An application that uses force feedback should disable autocentering before playing effects. </p> <p>DIPROPAUTOCENTER_ON: The device should automatically center when the user releases the device. </p> <p>Not all devices support the autocenter property. </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Axismode"/></dt> <dd>Sets the axis mode. The value being set (<see cref="SharpDX.DirectInput.DeviceAxisMode.Absolute"/> or <see cref="SharpDX.DirectInput.DeviceAxisMode.Relative"/>) must be specified in the  dwData member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure. See the description of the  pdiph parameter for more information.  This setting applies to the entire device, so the  dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be set to <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.BufferSize"/></dt> <dd>Sets the input buffer size. The value being set must be specified in the dwData member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure. See Remarks. This setting applies to the entire device, so the dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be set to <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Calibration"/></dt> <dd><p>Predefined property that allows the application to access the information that DirectInput uses to manipulate axes that require calibration. This property exists primarily for applications of the control panel type. Normal applications should not need to deal with calibration information.</p> <p>You can access the calibration mode property for an axis by setting the dwHow member of the <see cref="SharpDX.DirectInput.PropertyHeader"/> structure to <see cref="SharpDX.DirectInput.PropertyHowType.Byid"/> or to <see cref="SharpDX.DirectInput.PropertyHowType.Byoffset"/> and setting the dwObj member to the object ID or offset, respectively. </p> <p>Control panel applications that set new calibration data must also invoke the  IDirectInputJoyConfig::SendNotify method to notify other applications of the change in calibration. For more information about  IDirectInputJoyConfig::SendNotify, see the DirectX  Driver Development Kit (DDK). </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Calibrationmode"/></dt> <dd><p>Enables the application to specify whether DirectInput  should retrieve calibrated or uncalibrated data from an axis. By default, DirectInput retrieves calibrated data.</p> <p>Setting the calibration mode for the entire device is equivalent to setting it for each axis individually. </p> <p>The dwData member of the <see cref="SharpDX.DirectInput.PropertyInt"/> structure can be one of the following values: </p> <p>DIPROPCALIBRATIONMODE_COOKED: DirectInput should return data after applying calibration information. This is the default mode. </p> <p>DIPROPCALIBRATIONMODE_RAW: DirectInput should return raw, uncalibrated data. This mode is typically used only by applications of the control panel type. Note that raw data might include negative values. </p> <p>Setting a device into raw mode causes the dead zone, saturation, and range settings to be ignored. </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Cpoints"/></dt> <dd>This property is unsupported. Sets calibration points used for the adjustment of incoming raw data. The values being set must be specified as CPOINT types in the cp array of the associated DIPROPCPOINTS structure. This setting applies to individual device objects, so the dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyHeader"/> structure must be set to either <see cref="SharpDX.DirectInput.PropertyHowType.Byid"/> or <see cref="SharpDX.DirectInput.PropertyHowType.Byoffset"/>. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Deadzone"/></dt> <dd>Sets the value for the dead zone of a joystick, in the range from 0 through 10,000, where 0 indicates that there is no dead zone, 5,000 indicates that the dead zone extends over 50 percent of the physical range of the axis on both sides of center, and 10,000 indicates that the entire physical range of the axis is dead. When the axis is within the dead zone, it is reported as being at the center of its range. This setting can be applied to either the entire device or to a specific axis. </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Ffgain"/></dt> <dd>Sets the gain for the device. This setting applies to the entire device, rather than to any particular object, so the dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. <p>The dwData member contains a gain value that is applied to all effects created on the device. The value is an integer in the range from 0 through 10,000, specifying the amount by which effect magnitudes should be scaled for the device. For example, a value of 10,000 indicates that all effect magnitudes are to be taken at face value. A value of 9,000 indicates that all effect magnitudes are to be reduced to 90 percent of their nominal magnitudes. </p> <p>DirectInput always checks the gain value before setting the gain property.  If the gain is outside of the range (less than zero or greater than 10,000), <see cref="SharpDX.DirectInput.Device.SetProperty"/> will return <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.  Otherwise, if successful, it will return <see cref="SharpDX.DirectInput.ResultCode.Ok"/>, even if the device does not support force feedback.</p> <p>Setting a gain value is useful when an application wants to scale down the strength of all force-feedback effects uniformly, based on user preferences. </p> <p>Unlike other properties, the gain can be set when the device is in an acquired state. </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.InstanceName"/></dt> <dd><p>This property exists for advanced applications that want to change the friendly instance name of a device (as returned in the tszInstanceName member of the <see cref="SharpDX.DirectInput.DeviceInstance"/> structure) to distinguish it from similar devices that are plugged in simultaneously. Most applications should have no need to change the friendly name.</p> <p>This setting applies to the entire device, so the dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be set to <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. </p> <p>The pdiph parameter must be a reference to the diph member of a <see cref="SharpDX.DirectInput.PropertyString"/> structure. </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Productname"/></dt> <dd><p>This property exists for advanced applications that want to change the friendly product name of a device (as returned in the tszProductName member of the <see cref="SharpDX.DirectInput.DeviceInstance"/> structure) to distinguish it from similar devices which are plugged in simultaneously. Most applications should have no need to change the friendly name.</p> <p>This setting applies to the entire device, so the dwHow member of the associated <see cref="SharpDX.DirectInput.PropertyInt"/> structure must be set to <see cref="SharpDX.DirectInput.PropertyHowType.Device"/>. </p> <p>The pdiph parameter must be a reference to the diph member of a <see cref="SharpDX.DirectInput.PropertyString"/> structure. </p> <p>Setting the product name is only useful for changing the user-defined name of an analog joystick on Microsoft Windows 98, Windows 2000, and Windows Millennium Edition (Windows Me) computers. In other cases, attempting to set this property will still return <see cref="SharpDX.DirectInput.ResultCode.Ok"/>.  However, the name is not stored in a location used by <see cref="SharpDX.DirectInput.Device.GetProperty"/>. </p> </dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Range"/></dt> <dd>Sets the range of values an object can possibly report. The minimum and maximum values are taken from the lmin and lmax members of the associated <see cref="SharpDX.DirectInput.PropertyRange"/> structure. <p>For some devices, this is a read-only property. </p> <p>You cannot set a reverse range; lmax must be greater than lmin. </p></dd> <dt><see cref="SharpDX.DirectInput.PropertyGuids.Saturation"/></dt> <dd>Sets the value for the saturation zones of a joystick, in the range from 0 through 10,000. The saturation level is the point at which the axis is considered to be at its most extreme position. For example, if the saturation level is set to 9,500, the axis reaches the extreme of its range when it has moved 95 percent of the physical distance from its center position (or from the dead zone). This setting can be applied to either the entire device or a specific axis. </dd> </dl> </dd></param>	
        /// <param name="arg1"><dd> Address of the <see cref="SharpDX.DirectInput.PropertyHeader"/> structure contained within the type-specific property structure.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/> or <see cref="SharpDX.DirectInput.ResultCode.PropertyHadNoEffect"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/><see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, <see cref="SharpDX.DirectInput.ResultCode.ObjectNotFound"/>, <see cref="SharpDX.DirectInput.ResultCode.Unsupported"/>.</p></returns>	
        /// <remarks>	
        /// <p>The buffer size determines the amount of data that the buffer can hold between calls to the <see cref="SharpDX.DirectInput.Device.GetDeviceData"/> method before data is lost. This value may be set to 0 to indicate that the application does not read buffered data from the device. If the buffer size in the dwData member of the <see cref="SharpDX.DirectInput.PropertyInt"/> structure is too large for the device to support it, then the largest possible buffer size is set. </p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SetProperty']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setproperty</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SetProperty([In] const void&amp; arg0,[In] const void* arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SetProperty</unmanaged-short>	
        internal void SetProperty(System.IntPtr arg0, System.IntPtr arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, (void*)arg1,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Obtains access to the input device.	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>, or S_FALSE if the device was already acquired. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, <see cref="SharpDX.DirectInput.ResultCode.OtherApplicationHasPriority"/>.</p></returns>	
        /// <remarks>	
        /// <p>Before a device can be acquired, a data format must be set by using the <see cref="SharpDX.DirectInput.Device.SetDataFormat"/> method or <see cref="SharpDX.DirectInput.Device.SetActionMap"/> method. If the data format has not been set, <see cref="SharpDX.DirectInput.Device"/> Interface returns <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.</p> <p>Devices must be acquired before calling the <see cref="SharpDX.DirectInput.Device.GetDeviceState"/> or <see cref="SharpDX.DirectInput.Device.GetDeviceData"/> methods for that device.</p> <p>Device acquisition does not use a reference count. Therefore, if an application calls the  <see cref="SharpDX.DirectInput.Device"/> Interface method twice, then calls the <see cref="SharpDX.DirectInput.Device"/> Interface method once, the device is unacquired.</p> <p>If <see cref="SharpDX.DirectInput.Device.BuildActionMap"/> succeeds but no actions have been mapped, a subsequent call to <see cref="SharpDX.DirectInput.Device.SetActionMap"/> will return <see cref="SharpDX.DirectInput.ResultCode.Ok"/> but a call to <see cref="SharpDX.DirectInput.Device"/> Interface will fail with <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::Acquire']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.acquire</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::Acquire()</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::Acquire</unmanaged-short>	
        public void Acquire() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Releases access to the device.	
        /// </summary>	
        /// <returns><p>The return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/> is the device was unacquired, or <see cref="SharpDX.DirectInput.ResultCode.NoEffect"/> if the device was not in an acquired state.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::Unacquire']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.unacquire</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::Unacquire()</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::Unacquire</unmanaged-short>	
        public void Unacquire() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves immediate data from the device.	
        /// </summary>	
        /// <param name="arg0"><dd> Size of the buffer in the  lpvData parameter, in bytes.  </dd></param>	
        /// <param name="arg1"><dd> Address of a structure that receives the current state of the device. The format of the data is established by a prior call to the <see cref="SharpDX.DirectInput.Device.SetDataFormat"/> method.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InputLost"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotAcquired"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, E_PENDING.</p></returns>	
        /// <remarks>	
        /// <p>Before device data can be obtained, set the cooperative level by using the <see cref="SharpDX.DirectInput.Device.SetCooperativeLevel"/> method, then set the data format by using <see cref="SharpDX.DirectInput.Device.SetDataFormat"/>, and acquire the device by using the <see cref="SharpDX.DirectInput.Device"/> Interface method.</p> <p>The five predefined data formats require corresponding device state structures according to the following table:</p> <table> <tr><th>Data format	
        /// </th><th>State structure	
        /// </th></tr> <tr><td> c_dfDIMouse </td><td>DIMOUSESTATE </td></tr> <tr><td> c_dfDIMouse2 </td><td>DIMOUSESTATE2 </td></tr> <tr><td> c_dfDIKeyboard </td><td>array of 256 bytes	
        /// </td></tr> <tr><td> c_dfDIJoystick </td><td>DIJOYSTATE </td></tr> <tr><td> c_dfDIJoystick2 </td><td>DIJOYSTATE2 </td></tr> </table> <p>For example, if you passed the c_dfDIMouse format to the <see cref="SharpDX.DirectInput.Device.SetDataFormat"/> method, you must pass a DIMOUSESTATE structure to the <see cref="SharpDX.DirectInput.Device.GetDeviceState"/> method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetDeviceState']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdevicestate</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceState([In] unsigned int arg0,[In] void* arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetDeviceState</unmanaged-short>	
        internal void GetDeviceState(int arg0, System.IntPtr arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, (void*)arg1,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves buffered data from the device.	
        /// </summary>	
        /// <param name="arg0"><dd> Size of the <see cref="SharpDX.DirectInput.ObjectData"/> structure, in bytes.  </dd></param>	
        /// <param name="arg1"><dd> Array of <see cref="SharpDX.DirectInput.ObjectData"/> structures to receive the buffered data. The number of elements in this array must be equal to the value of the  pdwInOut parameter. If this parameter is <c>null</c>, the buffered data is not stored anywhere, but all other side effects take place.  </dd></param>	
        /// <param name="arg2"><dd> On entry, the number of elements in the array pointed to by the  rgdod parameter. On exit, the number of elements actually obtained.  </dd></param>	
        /// <param name="arg3"><dd> Flags that control the manner in which data is obtained. This value can be 0 or the following flag. <dl> <dt>DIGDD_PEEK</dt> <dd>Do not remove the items from the buffer. A subsequent  <see cref="SharpDX.DirectInput.Device.GetDeviceData"/> call will read the same data. Normally, data is removed from the buffer after it is read.</dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/> or <see cref="SharpDX.DirectInput.ResultCode.BufferOverflow"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InputLost"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotAcquired"/>, <see cref="SharpDX.DirectInput.ResultCode.NotBuffered"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <table><tr><th>Note </th></tr><tr><td>If the method returns <see cref="SharpDX.DirectInput.ResultCode.BufferOverflow"/>, the data in the rgdod array has been truncated.  </td></tr></table> <p>In the debug version of DirectInput, if a call is made to <see cref="SharpDX.DirectInput.Device.GetDeviceData"/> and the device has been unacquired, then random bytes will be sent to the device data buffer.  To make sure you are not using random device data, always check for the DIERR_UNACQUIRED return code.</p> <p>Before device data can be obtained, you must set the data format and the buffer size by using the <see cref="SharpDX.DirectInput.Device.SetDataFormat"/> and <see cref="SharpDX.DirectInput.Device.SetProperty"/> methods, or by using the <see cref="SharpDX.DirectInput.Device.SetActionMap"/> method. You must also acquire the device by using the <see cref="SharpDX.DirectInput.Device"/> Interface method.</p> <p>The maximum number of events that the buffer will hold is one less than the buffer size set with the <see cref="SharpDX.DirectInput.Device.SetProperty"/> method.</p> <p>The following code example reads up to ten buffered data elements, removing them from the device buffer as they are read.</p> <pre> <see cref="SharpDX.DirectInput.ObjectData"/> rgdod[10]; 	
        /// DWORD dwItems = 10; 	
        /// hres = idirectinputdevice9_GetDeviceData(  sizeof(<see cref="SharpDX.DirectInput.ObjectData"/>),  rgdod,  &amp;dwItems,  0); 	
        /// if (SUCCEEDED(hres)) {  // dwItems = Number of elements read (could be zero). if (hres == <see cref="SharpDX.DirectInput.ResultCode.BufferOverflow"/>) {  // Buffer had overflowed.  } 	
        /// } 	
        /// </pre> <p>Your application can flush the buffer and retrieve the number of flushed items by specifying <c>null</c> for the  rgdod parameter and a reference to a variable containing INFINITE for the  pdwInOut parameter. The following code example illustrates how this can be done.</p> <pre> dwItems = INFINITE; 	
        /// hres = idirectinputdevice9_GetDeviceData(  pdid,  sizeof(<see cref="SharpDX.DirectInput.ObjectData"/>),  <c>null</c>,  &amp;dwItems,  0); 	
        /// if (SUCCEEDED(hres)) {  // Buffer successfully flushed.  // dwItems = Number of elements flushed.  if (hres == <see cref="SharpDX.DirectInput.ResultCode.BufferOverflow"/>) {  // Buffer had overflowed.  } 	
        /// }	
        /// </pre> <p>Your application can query for the number of elements in the device buffer by setting the  rgdod parameter to <c>null</c>, setting  pdwInOut to INFINITE and setting  dwFlags to DIGDD_PEEK. The following code example illustrates how this can be done.</p> <pre> dwItems = INFINITE; 	
        /// hres = idirectinputdevice9_GetDeviceData(  pdid,  sizeof(<see cref="SharpDX.DirectInput.ObjectData"/>),  <c>null</c>,  &amp;dwItems,  DIGDD_PEEK); 	
        /// if (SUCCEEDED(hres)) {  // dwItems = Number of elements in buffer.  if (hres == <see cref="SharpDX.DirectInput.ResultCode.BufferOverflow"/>) {  // Buffer overflow occurred; not all data  //   was successfully captured.  } 	
        /// } 	
        /// </pre> <p>To query about whether a buffer overflow has occurred, set the  rgdod parameter to <c>null</c> and the  pdwInOut parameter to 0. The following code example illustrates how this can be done.</p> <pre> dwItems = 0; 	
        /// hres = idirectinputdevice9_GetDeviceData(  pdid,  sizeof(<see cref="SharpDX.DirectInput.ObjectData"/>),  <c>null</c>,  &amp;dwItems,  0); 	
        /// if (hres == <see cref="SharpDX.DirectInput.ResultCode.BufferOverflow"/>) {  // Buffer overflow occurred. 	
        /// } 	
        /// </pre>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetDeviceData']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdevicedata</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceData([In] unsigned int arg0,[In, Buffer] void* arg1,[InOut] unsigned int* arg2,[In] unsigned int arg3)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetDeviceData</unmanaged-short>	
        internal void GetDeviceData(int arg0, System.IntPtr arg1, ref int arg2, int arg3) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* arg2_ = &arg2)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, (void*)arg1, arg2_, arg3,((void**)(*(void**)_nativePointer))[10]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Sets the data format for the DirectInput  device.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a structure that describes the format of the data that the DirectInputDevice should return. An application can define its own <see cref="SharpDX.DirectInput.DataFormat"/> structure or use one of the following predefined global variables: <ul> <li><p> c_dfDIKeyboard </p></li> <li><p> c_dfDIMouse </p></li> <li><p> c_dfDIMouse2 </p></li> <li><p> c_dfDIJoystick </p></li> <li><p> c_dfDIJoystick2 </p></li> </ul> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.Acquired"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>The data format must be set before the device can be acquired by using the <see cref="SharpDX.DirectInput.Device"/> Interface method. It is necessary to set the data format only once. The data format cannot be changed while the device is acquired.</p> <p>If the application is using action mapping, the data format is set instead by the call to <see cref="SharpDX.DirectInput.Device.SetActionMap"/>.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SetDataFormat']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setdataformat</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SetDataFormat([In] const DIDATAFORMAT* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SetDataFormat</unmanaged-short>	
        internal void SetDataFormat(SharpDX.DirectInput.DataFormat arg0) {
            unsafe {
                var arg0_ = SharpDX.DirectInput.DataFormat.__NewNative();
                arg0.__MarshalTo(ref arg0_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_,((void**)(*(void**)_nativePointer))[11]);		
                arg0.__MarshalFree(ref arg0_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Specifies an event that is to be set when the device state changes. It is also used to turn off event notification.	
        /// </summary>	
        /// <param name="arg0"><dd> Handle to the event that is to be set when the device state changes. DirectInput uses the Microsoft Win32 SetEvent function on the handle when the state of the device changes. If the hEvent parameter is <c>null</c>, notification is disabled.  <p>The application can create the handle as either a manual-reset or autoreset event by using the Win32 CreateEvent function. If the event is created as an autoreset event, the operating system automatically resets the event when a wait has been satisfied. If the event is created as a manual-reset event, it is the application's responsibility to call the Win32 ResetEvent function to reset it. DirectInput does not call the Win32 ResetEvent function for event notification handles. Most applications create the event as an automatic-reset event.</p> </dd></param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SetEventNotification']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.seteventnotification</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SetEventNotification([In] void* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SetEventNotification</unmanaged-short>	
        internal void SetEventNotification(System.IntPtr arg0) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0,((void**)(*(void**)_nativePointer))[12]);		
                __result__.CheckError();
            }
        }
        
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SetCooperativeLevel']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setcooperativelevel</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SetCooperativeLevel([In] HWND arg0,[In] DISCL arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SetCooperativeLevel</unmanaged-short>	
        public void SetCooperativeLevel(System.IntPtr arg0, SharpDX.DirectInput.CooperativeLevel arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, unchecked((int)arg1),((void**)(*(void**)_nativePointer))[13]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves information about a device object, such as a button or axis.	
        /// </summary>	
        /// <param name="arg1"><dd> Value that identifies the object whose information is to be retrieved. The value set for this parameter depends on the value specified in the  dwHow parameter.  </dd></param>	
        /// <param name="arg2"><dd> Value that specifies how the  dwObj parameter should be interpreted. The dwHow value can be one of the following:  <dl> <dt><see cref="SharpDX.DirectInput.PropertyHowType.Byoffset"/></dt> <dd>The dwObj parameter is the offset into the current data format of the object whose information is being accessed. </dd> <dt><see cref="SharpDX.DirectInput.PropertyHowType.Byid"/></dt> <dd>The dwObj parameter is the object type/instance identifier. This identifier is returned in the  dwType member of the <see cref="SharpDX.DirectInput.DeviceObjectInstance"/> structure returned from a previous call to the <see cref="SharpDX.DirectInput.Device.EnumObjects"/> method. </dd> <dt><see cref="SharpDX.DirectInput.PropertyHowType.Byusage"/></dt> <dd>The dwObj parameter contains the HID Usage Page and Usage values of the object, combined by the DIMAKEUSAGEDWORD macro.</dd> </dl> </dd></param>	
        /// <returns><dd> Address of a <see cref="SharpDX.DirectInput.DeviceObjectInstance"/> structure to be filled with information about the object. The structure's  dwSize member must be initialized before this method is called.  </dd></returns>	
        /// <remarks>	
        /// <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVICEOBJECTINSTANCE_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVICEOBJECTINSTANCE_DX3).</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetObjectInfo']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getobjectinfo</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetObjectInfo([Out] DIDEVICEOBJECTINSTANCEW* arg0,[In] unsigned int arg1,[In] DIPH arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetObjectInfo</unmanaged-short>	
        internal SharpDX.DirectInput.DeviceObjectInstance GetObjectInfo(int arg1, SharpDX.DirectInput.PropertyHowType arg2) {
            unsafe {
                SharpDX.DirectInput.DeviceObjectInstance arg0;
                var arg0_ = SharpDX.DirectInput.DeviceObjectInstance.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_, arg1, unchecked((int)arg2),((void**)(*(void**)_nativePointer))[14]);		
                arg0 = new SharpDX.DirectInput.DeviceObjectInstance();
                arg0.__MarshalFrom(ref arg0_);
                __result__.CheckError();
                return arg0;
            }
        }
        
        /// <summary>	
        /// Obtains information about the device's identity.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a <see cref="SharpDX.DirectInput.DeviceInstance"/> structure to be filled with information about the device's identity. An application must initialize the structure's  dwSize member before calling this method.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, E_POINTER.</p></returns>	
        /// <remarks>	
        /// <p>For compatibility with DirectX 3, it is also valid to pass a  DIDEVICEINSTANCE_DX3 structure with the  dwSize member initialized to  sizeof(DIDEVICEINSTANCE_DX3).</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetDeviceInfo']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getdeviceinfo</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetDeviceInfo([Out] DIDEVICEINSTANCEW* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetDeviceInfo</unmanaged-short>	
        internal void GetInformation(out SharpDX.DirectInput.DeviceInstance arg0) {
            unsafe {
                var arg0_ = SharpDX.DirectInput.DeviceInstance.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_,((void**)(*(void**)_nativePointer))[15]);		
                arg0 = new SharpDX.DirectInput.DeviceInstance();
                arg0.__MarshalFrom(ref arg0_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Runs the DirectInput control panel associated with this device. If the device does not have a control panel associated with it, the default device control panel is launched.	
        /// </summary>	
        /// <param name="arg0"><dd> Parent window handle. If this parameter is <c>null</c>  , no parent window is used.  </dd></param>	
        /// <param name="arg1"><dd> Not currently used. Zero is the only valid value.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values:</p><see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/><see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::RunControlPanel']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.runcontrolpanel</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::RunControlPanel([In] HWND arg0,[In] unsigned int arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::RunControlPanel</unmanaged-short>	
        internal void RunControlPanel(System.IntPtr arg0, int arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, arg1,((void**)(*(void**)_nativePointer))[16]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Initializes a DirectInputDevice object. TheIDirectInput8::CreateDevicemethod automatically initializes a device after creating it; applications normally do not need to call this method.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <param name="arg2">No documentation.</param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/> or S_FALSE.  If the method returns S_FALSE, the device had already been initialized with the instance <see cref="System.Guid"/> passed in though rGUID. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.Acquired"/>, <see cref="SharpDX.DirectInput.ResultCode.DeviceNotRegistered"/>.</p></returns>	
        /// <remarks>	
        /// <p>If this method fails, the underlying object should be considered to be in an indeterminate state and must be reinitialized before use.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::Initialize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.initialize</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::Initialize([In] HINSTANCE arg0,[In] unsigned int arg1,[In] const GUID&amp; arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::Initialize</unmanaged-short>	
        internal void Initialize(System.IntPtr arg0, int arg1, System.Guid arg2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, arg1, &arg2,((void**)(*(void**)_nativePointer))[17]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Creates and initializes an instance of an effect identified by the effect globally unique identifier (<see cref="System.Guid"/>).	
        /// </summary>	
        /// <param name="arg0"><dd> Reference to (C++) or address of (C) the <see cref="System.Guid"/> identifying the effect to be created. This can be a predefined effect <see cref="System.Guid"/>, or it can be a <see cref="System.Guid"/> obtained from <see cref="SharpDX.DirectInput.Device.EnumEffects"/>. The following standard effect GUIDs are defined: <ul> <li><p><see cref="SharpDX.DirectInput.EffectGuid.ConstantForce"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.RampForce"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Square"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Sine"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Triangle"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.SawtoothUp"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.SawtoothDown"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Spring"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Damper"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Inertia"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.Friction"/> </p></li> <li><p><see cref="SharpDX.DirectInput.EffectGuid.CustomForce"/> </p></li> </ul> </dd></param>	
        /// <param name="arg1"><dd> <see cref="SharpDX.DirectInput.EffectParameters"/> structure that provides parameters for the created effect. This parameter is optional. If it is <c>null</c>, the effect object is created without parameters. The application must then call the <see cref="SharpDX.DirectInput.Effect.SetParameters"/> method to set the parameters of the effect before it can download the effect.  </dd></param>	
        /// <param name="arg2"><dd> Address of a variable to receive a reference to the  <see cref="SharpDX.DirectInput.Effect"/> Interface interface if successful.  </dd></param>	
        /// <param name="arg3"><dd> Controlling unknown for COM aggregation. The value is <c>null</c> if the interface is not aggregated. Most calling applications pass <c>null</c>.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.DeviceFull"/>, <see cref="SharpDX.DirectInput.ResultCode.DeviceNotRegistered"/>,<see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>If the return value is <see cref="SharpDX.Result.Ok"/>, the effect was created, and the parameters of the effect were updated, but the effect was not necessarily downloaded. For it to be downloaded, the device must be acquired in exclusive mode.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::CreateEffect']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.createeffect</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::CreateEffect([In] const GUID&amp; arg0,[In] const DIEFFECT* arg1,[Out, Fast] IDirectInputEffect** arg2,[In] IUnknown* arg3)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::CreateEffect</unmanaged-short>	
        internal void CreateEffect(System.Guid arg0, SharpDX.DirectInput.EffectParameters arg1, SharpDX.DirectInput.Effect arg2, SharpDX.ComObject arg3) {
            unsafe {
                var arg1_ = SharpDX.DirectInput.EffectParameters.__NewNative();
                arg1.__MarshalTo(ref arg1_);
                IntPtr arg2_ = IntPtr.Zero;
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0, &arg1_, &arg2_, (void*)((arg3 == null)?IntPtr.Zero:arg3.NativePointer),((void**)(*(void**)_nativePointer))[18]);		
                arg1.__MarshalFree(ref arg1_);
                ((SharpDX.DirectInput.Effect)arg2).NativePointer = arg2_;
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Enumerates all the effects supported by the force-feedback system on the device. The enumerated GUIDs can represent predefined effects, as well as effects peculiar to the device manufacturer.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of an application-defined callback function. The declaration of this function must conform to that of the DIEnumEffectsCallback prototype.  </dd></param>	
        /// <param name="arg1"><dd> A 32-bit application-defined value to be passed to the callback function. This parameter can be any 32-bit type; it is declared as LPVOID for convenience.  </dd></param>	
        /// <param name="arg2"><dd> Effect type filter. Use one of the DIEFT_* values to indicate the effect type to be enumerated, or <see cref="SharpDX.DirectInput.EffectType.All"/> to enumerate all effect types. For a list of these values, see DIEffectInfo.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values:</p><see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/><see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/></returns>	
        /// <remarks>	
        /// <p>If the callback stops the enumeration prematurely, the enumeration is considered to have succeeded.</p> <p>An application can use the dwEffType member of the DIEffectInfo structure to obtain general information about the effect, such as its type and which envelope and condition parameters are supported by the effect.</p> <p>To exploit an effect to its fullest, contact the device manufacturer to obtain information about the semantics of the effect and its effect-specific parameters.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::EnumEffects']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.enumeffects</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::EnumEffects([In] __function__stdcall* arg0,[In] void* arg1,[In] DIEFT arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::EnumEffects</unmanaged-short>	
        internal void EnumEffects(SharpDX.FunctionCallback arg0, System.IntPtr arg1, SharpDX.DirectInput.EffectType arg2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, (void*)arg1, unchecked((int)arg2),((void**)(*(void**)_nativePointer))[19]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Obtains information about an effect.	
        /// </summary>	
        /// <param name="arg1"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref="System.Guid"/>) identifying the effect for which information is being requested.  </dd></param>	
        /// <returns><dd> DIEffectInfo structure that receives information about the effect. The calling application must initialize the dwSize member of the structure before calling this method.  </dd></returns>	
        /// <remarks>	
        /// <table><tr><th>Note </th></tr><tr><td>If this method is called on an non-Force Feedback device, E_POINTER will be returned.</td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetEffectInfo']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.geteffectinfo</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetEffectInfo([Out] DIEFFECTINFOW* arg0,[In] const GUID&amp; arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetEffectInfo</unmanaged-short>	
        public SharpDX.DirectInput.EffectInfo GetEffectInfo(System.Guid arg1) {
            unsafe {
                SharpDX.DirectInput.EffectInfo arg0;
                var arg0_ = SharpDX.DirectInput.EffectInfo.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_, &arg1,((void**)(*(void**)_nativePointer))[20]);		
                arg0 = new SharpDX.DirectInput.EffectInfo();
                arg0.__MarshalFrom(ref arg0_);
                __result__.CheckError();
                return arg0;
            }
        }
        
        /// <summary>	
        /// Retrieves the state of the device's force-feedback system.	
        /// </summary>	
        /// <returns><dd> Location for flags that describe the current state of the device's force-feedback system. <p>The value is a combination of the following constants. </p> <dl> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff"/></dt> <dd>The device's force-feedback actuators are disabled. If the device cannot report the actuator state, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff"/> is returned. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn"/></dt> <dd>The device's force-feedback actuators are enabled. If the device cannot report the actuator state, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.ActuatorsOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.ActuatorsOff"/> is returned. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.DeviceLost"/></dt> <dd>The device suffered an unexpected failure and is in an indeterminate state. It must be reset either by unacquiring and reacquiring the device, or by sending a <see cref="SharpDX.DirectInput.ForceFeedbackCommand.Reset"/> command.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.Empty"/></dt> <dd>The device has no downloaded effects.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.Paused"/></dt> <dd>Playback of all active effects has been paused.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.PowerOff"/></dt> <dd>The force-feedback system is not currently available. If the device cannot report the power state, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.PowerOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.PowerOff"/> is returned.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.PowerOn"/></dt> <dd>Power to the force-feedback system is currently available. If the device cannot report the power state, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.PowerOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.PowerOff"/> is returned.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff"/></dt> <dd>The safety switch is currently off; that is, the device cannot operate. If the device cannot report the state of the safety switch, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff"/> is returned.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn"/></dt> <dd>The safety switch is currently on; that is, the device can operate. If the device cannot report the state of the safety switch, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.SafetySwitchOff"/> is returned.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.Stopped"/></dt> <dd>No effects are playing, and the device is not paused.  </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff"/></dt> <dd>The user force-feedback switch is currently off; that is, the device cannot operate. If the device cannot report the state of the user force-feedback switch, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff"/> is returned. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn"/></dt> <dd>The user force-feedback switch is currently on; that is, the device can operate. If the device cannot report the state of the user force-feedback switch, neither <see cref="SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOn"/> nor <see cref="SharpDX.DirectInput.ForceFeedbackState.UserSafetySwitchOff"/> is returned.   </dd> </dl> <p> Applications should ignore any flags that are not currently defined. </p> </dd></returns>	
        /// <remarks>	
        /// <p>The device must be acquired at the exclusive cooperative level for this method to succeed.</p> <p>The <see cref="SharpDX.DirectInput.ForceFeedbackState.Paused"/> and <see cref="SharpDX.DirectInput.ForceFeedbackState.Stopped"/> flags may not always be reported correctly because there is no mechanism for the drivers to report that they support these flags. </p> <table><tr><th>Note </th></tr><tr><td>When calling <see cref="SharpDX.DirectInput.Device.GetForceFeedbackState"/>, it is possible for the state of the device returned not to match the expected state.  This might happen if commands recently sent by <see cref="SharpDX.DirectInput.Device.SendForceFeedbackCommand"/> are still pending.  Wait a short time and then check the device state again. </td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetForceFeedbackState']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getforcefeedbackstate</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetForceFeedbackState([Out] DIGFFS* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetForceFeedbackState</unmanaged-short>	
        public SharpDX.DirectInput.ForceFeedbackState GetForceFeedbackState() {
            unsafe {
                SharpDX.DirectInput.ForceFeedbackState arg0;
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0,((void**)(*(void**)_nativePointer))[21]);		
                __result__.CheckError();
                return arg0;
            }
        }
        
        /// <summary>	
        /// Sends a command to the device's force-feedback system.	
        /// </summary>	
        /// <param name="arg0"><dd> Single value indicating the desired change in state. The value can be one of the following.  <dl> <dt><see cref="SharpDX.DirectInput.ForceFeedbackCommand.Continue"/></dt> <dd>Paused playback of all active effects is to be continued. It is an error to send this command when the device is not in a paused state. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackCommand.Pause"/></dt> <dd>Playback of all active effects is to be paused. This command also stops the clock-on effects so that they continue playing to their full duration when restarted. <p>While the device is paused, new effects cannot be started, and existing ones cannot be modified. Doing so can cause the subsequent <see cref="SharpDX.DirectInput.ForceFeedbackCommand.Continue"/> command to fail to perform properly. </p> <p>To abandon a pause and stop all effects, use the <see cref="SharpDX.DirectInput.ForceFeedbackCommand.StopAll"/> or DISFCC_RESET commands. </p></dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackCommand.Reset"/></dt> <dd>The device's force-feedback system is to be put in its startup state. All effects are removed from the device, are no longer valid, and must be re-created if they are to be used again. The device's actuators are disabled. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackCommand.SetActuatorsOff"/></dt> <dd>The device's force-feedback actuators are to be disabled. While the actuators are off, effects continue to play but are ignored by the device. Using the analogy of a sound playback device, they are muted, rather than paused. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackCommand.SetActuatorsOn"/></dt> <dd>The device's force-feedback actuators are to be enabled. </dd> <dt><see cref="SharpDX.DirectInput.ForceFeedbackCommand.StopAll"/></dt> <dd>Playback of any active effects is to be stopped. All active effects are reset, but are still being maintained by the device and are still valid. If the device is in a paused state, that state is lost. This command is equivalent to calling the <see cref="SharpDX.DirectInput.Effect.Stop"/> method for each effect playing. </dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InputLost"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotExclusiveAcquired"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, <see cref="SharpDX.DirectInput.ResultCode.Unsupported"/>.</p></returns>	
        /// <remarks>	
        /// <p>The device must be acquired at the exclusive cooperative level for this method to succeed.</p> <table><tr><th>Note </th></tr><tr><td>When calling <see cref="SharpDX.DirectInput.Device.GetForceFeedbackState"/>, it is possible for the state of the device returned not to match the expected state.  This might happen if commands recently sent by <see cref="SharpDX.DirectInput.Device.SendForceFeedbackCommand"/> are still pending.  Wait a short time and then check the device state again. </td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SendForceFeedbackCommand']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.sendforcefeedbackcommand</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SendForceFeedbackCommand([In] DISFFC arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SendForceFeedbackCommand</unmanaged-short>	
        public void SendForceFeedbackCommand(SharpDX.DirectInput.ForceFeedbackCommand arg0) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, unchecked((int)arg0),((void**)(*(void**)_nativePointer))[22]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Enumerates all the currently created effects for this device. Effects created byIDirectInputDevice8::CreateEffectare enumerated.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <param name="arg2">No documentation.</param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>The results are unpredictable if you create or destroy an effect while an enumeration is in progress. However, the callback function can safely release the effect passed to it.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::EnumCreatedEffectObjects']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.enumcreatedeffectobjects</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::EnumCreatedEffectObjects([In] __function__stdcall* arg0,[In] void* arg1,[In] unsigned int arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::EnumCreatedEffectObjects</unmanaged-short>	
        internal void EnumCreatedEffectObjects(SharpDX.FunctionCallback arg0, System.IntPtr arg1, int arg2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, (void*)arg1, arg2,((void**)(*(void**)_nativePointer))[23]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Sends a hardware-specific command to the force-feedback driver.	
        /// </summary>	
        /// <param name="arg0"><dd> <see cref="SharpDX.DirectInput.EffectEscape"/> structure that describes the command to be sent. On success, the cbOutBuffer member contains the number of bytes of the output buffer actually used.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.DeviceFull"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>Other device-specific error codes are also possible. Ask the hardware manufacturer for details.</p> <p>Because each driver implements different escapes, it is the application's responsibility to ensure that it is sending the escape to the correct driver by comparing the value of the guidFFDriver member of the <see cref="SharpDX.DirectInput.DeviceInstance"/> structure against the value the application is expecting.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::Escape']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.escape</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::Escape([In] DIEFFESCAPE* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::Escape</unmanaged-short>	
        internal void Escape(ref SharpDX.DirectInput.EffectEscape arg0) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* arg0_ = &arg0)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0_,((void**)(*(void**)_nativePointer))[24]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves data from polled objects on a DirectInput device. If the device does not require polling, calling this method has no effect. If a device that requires polling is not polled periodically, no new data is received from the device. Calling this method causes DirectInput to update the device state, generate input events (if buffered data is enabled), and set notification events (if notification is enabled).	
        /// </summary>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>, or <see cref="SharpDX.DirectInput.ResultCode.NoEffect"/> if the device does not require polling. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InputLost"/>, <see cref="SharpDX.DirectInput.ResultCode.NotAcquired"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>Before a device data can be polled, the data format must be set by using the <see cref="SharpDX.DirectInput.Device.SetDataFormat"/> or <see cref="SharpDX.DirectInput.Device.SetActionMap"/> method, and the device must be acquired by using the <see cref="SharpDX.DirectInput.Device"/> Interface method.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::Poll']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.poll</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::Poll()</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::Poll</unmanaged-short>	
        public void Poll() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[25]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Sends data to a device that accepts output.<table><tr><th>Note </th></tr><tr><td>There are no devices that accept output from <see cref="SharpDX.DirectInput.Device.SendDeviceData"/>.  See Remarks.</td></tr></table>	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <param name="arg2">No documentation.</param>	
        /// <param name="arg3">No documentation.</param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InputLost"/>, <see cref="SharpDX.DirectInput.ResultCode.NotAcquired"/>, <see cref="SharpDX.DirectInput.ResultCode.ReportFull"/>, <see cref="SharpDX.DirectInput.ResultCode.Unplugged"/>.</p></returns>	
        /// <remarks>	
        /// <p>Applications should not use <see cref="SharpDX.DirectInput.Device.SendDeviceData"/>.  Force Feedback is the recommended way to send data to a device.  If you want to send other data to a device, such as changing LED or internal device states, the HID application programming interface (API) is the recommended way.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SendDeviceData']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.senddevicedata</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SendDeviceData([In] unsigned int arg0,[In, Buffer] const DIDEVICEOBJECTDATA* arg1,[InOut] unsigned int* arg2,[In] unsigned int arg3)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SendDeviceData</unmanaged-short>	
        internal void SendDeviceData(int arg0, SharpDX.DirectInput.ObjectData[] arg1, ref int arg2, int arg3) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* arg1_ = arg1)
                    fixed (void* arg2_ = &arg2)
                        __result__= 
        				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, arg1_, arg2_, arg3,((void**)(*(void**)_nativePointer))[26]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Enumerates all the effects in a file created by the Force Editor utility or another application using the same file format.	
        /// </summary>	
        /// <param name="arg0"><dd> Name of the RIFF file.  </dd></param>	
        /// <param name="arg1"><dd> Address of an application-defined callback function. The declaration of this function must conform to that of the DIEnumEffectsInFileCallback prototype.  </dd></param>	
        /// <param name="arg2"><dd> Application-defined value to be passed to the callback function. This parameter can be any 32-bit type.  </dd></param>	
        /// <param name="arg3"><dd> Can be <see cref="SharpDX.DirectInput.EffectFileFlags.None"/> ( = 0) or one or both of the following values:  <dl> <dt><see cref="SharpDX.DirectInput.EffectFileFlags.IncludeNonStandard"/></dt> <dd>Include effect types that are not defined by DirectInput. </dd> <dt><see cref="SharpDX.DirectInput.EffectFileFlags.ModidyIfNeeded"/></dt> <dd>Instruct DirectInput to modify the authored effect, if necessary, so that it plays on the current device. For example, by default, an effect authored for two axes does not play on a single-axis device. Setting this flag allows the effect to play on a single axis. The parameters are modified in the <see cref="SharpDX.DirectInput.EffectParameters"/> structure pointed to by the lpDiEffect member of the <see cref="SharpDX.DirectInput.EffectFile"/> structure passed to the callback. </dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values:</p><see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/><see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/></returns>	
        /// <remarks>	
        /// <p>If the callback stops the enumeration prematurely, the enumeration is considered to have succeeded.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::EnumEffectsInFile']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.enumeffectsinfile</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::EnumEffectsInFile([In] const wchar_t* arg0,[In] __function__stdcall* arg1,[In] void* arg2,[In] DIFEF arg3)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::EnumEffectsInFile</unmanaged-short>	
        internal void EnumEffectsInFile(string arg0, SharpDX.FunctionCallback arg1, System.IntPtr arg2, SharpDX.DirectInput.EffectFileFlags arg3) {
            unsafe {
                IntPtr arg0_ = Utilities.StringToHGlobalUni(arg0);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0_, arg1, (void*)arg2, unchecked((int)arg3),((void**)(*(void**)_nativePointer))[27]);		
                Marshal.FreeHGlobal(arg0_ );
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Saves information about one or more force-feedback effects to a file that can be read by usingIDirectInputDevice8::EnumEffectsInFile. This method is chiefly of interest to those wanting to write their own force-authoring applications.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <param name="arg2">No documentation.</param>	
        /// <param name="arg3">No documentation.</param>	
        /// <returns><p>If the method succeeds, it returns <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If it fails, the return value can be <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::WriteEffectToFile']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.writeeffecttofile</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::WriteEffectToFile([In] const wchar_t* arg0,[In] unsigned int arg1,[In, Buffer] DIFILEEFFECT* arg2,[In] unsigned int arg3)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::WriteEffectToFile</unmanaged-short>	
        public void WriteEffectToFile(string arg0, int arg1, SharpDX.DirectInput.EffectFile[] arg2, int arg3) {
            unsafe {
                IntPtr arg0_ = Utilities.StringToHGlobalUni(arg0);
                SharpDX.DirectInput.EffectFile.__Native[] arg2__ = new SharpDX.DirectInput.EffectFile.__Native[arg2.Length];
                for (int i = 0; i < arg2.Length; i++)
                    arg2[i].__MarshalTo(ref arg2__[i]);				
                SharpDX.Result __result__;
                fixed (void* arg2_ = arg2__)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0_, arg1, arg2_, arg3,((void**)(*(void**)_nativePointer))[28]);		
                Marshal.FreeHGlobal(arg0_ );
                for (int i = 0; i < arg2.Length; i++)
                    arg2[i].__MarshalFree(ref arg2__[i]);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Builds an action map for the device and retrieves information about it.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a <see cref="SharpDX.DirectInput.ActionFormat"/> structure that receives information about the action map.  </dd></param>	
        /// <param name="arg1"><dd> Pointer to a string that specifies the name of the user for whom mapping is requested. When using ANSI compiler settings, pass <c>null</c> and DirectInput will assume the current user name. When using Unicode compiler settings, do not pass <c>null</c> because the mappings will not be saved. </dd></param>	
        /// <param name="arg2"><dd> Flags to control the mapping. This can be one of the following values.  <dl> <dt>DIDBAM_DEFAULT</dt> <dd>Overwrite all mappings except application-specified mappings; that is, mappings that have the DIA_APPMAPPED flag in the <see cref="SharpDX.DirectInput.Action"/> structure.</dd> <dt>DIDBAM_HWDEFAULTS</dt> <dd>Overwrite all mappings, including application-specified mappings. This flag is similar to DIDBAM_INITIALIZE, but automatically overrides user-mapped actions with the defaults specified by the device driver or DirectInput.</dd> <dt>DIDBAM_INITIALIZE</dt> <dd>Overwrite all mappings, including application-specified mappings.</dd> <dt>DIDBAM_PRESERVE</dt> <dd>Preserve current mappings assigned for this device or any other configured device.</dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>, <see cref="SharpDX.DirectInput.ResultCode.NoEffect"/>, or <see cref="SharpDX.DirectInput.ResultCode.WriteProtect"/>&gt;. See Remarks. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.MapFileFail"/>.</p></returns>	
        /// <remarks>	
        /// <p>The method returns <see cref="SharpDX.DirectInput.ResultCode.NoEffect"/> if no mappings were created for the device. For example, a keyboard or mouse will not provide mappings for genre-specific actions.</p> <p>If <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/> is returned, one or more of the mappings was not valid. The  dwHow member of the <see cref="SharpDX.DirectInput.Action"/> structure is set to DIAH_ERROR. The application can iterate through the action map to find and correct errors.</p> <p>If DIEFF_MAPFILEFAIL is returned, an error has occurred either reading the vendor supplied file for the device or reading or writing the user configuration file for the device.</p> <p><see cref="SharpDX.DirectInput.ResultCode.WriteProtect"/>&gt; is returned if the mappings were not configurable. For example, the buttons on a voice controller cannot be reconfigured because each button causes a specific hardware action to occur. <see cref="SharpDX.DirectInput.ResultCode.WriteProtect"/>&gt; overrides other success codes, so a check of the return codes will not reveal if any actions have been mapped.  </p> <p>If <see cref="SharpDX.DirectInput.Device.BuildActionMap"/> succeeds but no actions have been mapped, a subsequent call to <see cref="SharpDX.DirectInput.Device.SetActionMap"/> will return <see cref="SharpDX.DirectInput.ResultCode.Ok"/> but a call to <see cref="SharpDX.DirectInput.Device"/> Interface will fail with <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::BuildActionMap']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.buildactionmap</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::BuildActionMap([In] DIACTIONFORMATW* arg0,[In] const wchar_t* arg1,[In] unsigned int arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::BuildActionMap</unmanaged-short>	
        internal void BuildActionMap(ref SharpDX.DirectInput.ActionFormat arg0, string arg1, int arg2) {
            unsafe {
                var arg0_ = new SharpDX.DirectInput.ActionFormat.__Native();
                arg0.__MarshalTo(ref arg0_);
                IntPtr arg1_ = Utilities.StringToHGlobalUni(arg1);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_, (void*)arg1_, arg2,((void**)(*(void**)_nativePointer))[29]);		
                arg0.__MarshalFree(ref arg0_);
                Marshal.FreeHGlobal(arg1_ );
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Sets the data format for a device and maps application-defined actions to device objects. It also sets the buffer size for buffered data.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a <see cref="SharpDX.DirectInput.ActionFormat"/> structure containing information about the action map to be applied.  </dd></param>	
        /// <param name="arg1"><dd> Unicode string that specifies the name of the user for which the action map is being set. A value of <c>null</c> specifies the user currently logged into the system.  </dd></param>	
        /// <param name="arg2"><dd> DWORD value that specifies how the action map is applied. This can be one of the following values.  <dl> <dt>DIDSAM_DEFAULT</dt> <dd> Set the action map for this user. If the map differs from the current map, the new settings are saved to disk. </dd> <dt>DIDSAM_FORCESAVE</dt> <dd> Always save the configuration to disk. </dd> <dt>DIDSAM_NOUSER</dt> <dd> Reset user ownership for this device in the default configuration property sheet. Resetting user ownership does not remove the current action map. </dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.Ok"/>, <see cref="SharpDX.DirectInput.ResultCode.SettingsNotSaved"/>, or <see cref="SharpDX.DirectInput.ResultCode.WriteProtect"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.Acquired"/> or <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.SettingsNotSaved"/>, <see cref="SharpDX.DirectInput.ResultCode.WriteProtect"/>, <see cref="SharpDX.DirectInput.ResultCode.Acquired"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.</p></returns>	
        /// <remarks>	
        /// <p>This method provides the mechanism to change action-to-control mapping from the device defaults. An application must use this method to map its in-game actions to virtual controls.</p> <p>The user name passed to this method binds a set of action mappings for a device to a specific user. Settings are automatically saved to disk when they differ from the currently applied map. Applications that accept input from multiple users should be very careful when applying action maps to the system mouse or keyboard, as the action maps for each user may conflict.</p> <p>The method can be called only when the device is not acquired.</p> <p>If <see cref="SharpDX.DirectInput.Device.BuildActionMap"/> succeeds but no actions have been mapped, a subsequent call to <see cref="SharpDX.DirectInput.Device.SetActionMap"/> will return <see cref="SharpDX.DirectInput.ResultCode.Ok"/> but a call to <see cref="SharpDX.DirectInput.Device"/> Interface will fail with <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::SetActionMap']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setactionmap</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::SetActionMap([In] DIACTIONFORMATW* arg0,[In] const wchar_t* arg1,[In] unsigned int arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::SetActionMap</unmanaged-short>	
        internal void SetActionMap(ref SharpDX.DirectInput.ActionFormat arg0, string arg1, int arg2) {
            unsafe {
                var arg0_ = new SharpDX.DirectInput.ActionFormat.__Native();
                arg0.__MarshalTo(ref arg0_);
                IntPtr arg1_ = Utilities.StringToHGlobalUni(arg1);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_, (void*)arg1_, arg2,((void**)(*(void**)_nativePointer))[30]);		
                arg0.__MarshalFree(ref arg0_);
                Marshal.FreeHGlobal(arg1_ );
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves information about a device image for use in a configuration property sheet.	
        /// </summary>	
        /// <param name="arg0"><dd> Address of a <see cref="SharpDX.DirectInput.DeviceImageHeader"/> structure that receives information about the device image.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.MapFileFail"/>, <see cref="SharpDX.DirectInput.ResultCode.MoreData"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, <see cref="SharpDX.DirectInput.ResultCode.ObjectNotFound"/>.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputDevice8W::GetImageInfo']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.getimageinfo</msdn-id>	
        /// <unmanaged>HRESULT IDirectInputDevice8W::GetImageInfo([InOut] DIDEVICEIMAGEINFOHEADERW* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputDevice8W::GetImageInfo</unmanaged-short>	
        internal void GetImageInfo(SharpDX.DirectInput.DeviceImageHeader arg0) {
            unsafe {
                var arg0_ = SharpDX.DirectInput.DeviceImageHeader.__NewNative();
                arg0.__MarshalTo(ref arg0_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_,((void**)(*(void**)_nativePointer))[31]);		
                arg0.__MarshalFrom(ref arg0_);
                arg0.__MarshalFree(ref arg0_);
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// <p>Applications use the methods of the <see cref="SharpDX.DirectInput.DirectInput"/> interface to enumerate, create, and retrieve the status of Microsoft DirectInput devices, initialize the DirectInput object, and invoke an instance of the Microsoft Windows Control Panel. </p>IDirectInput8 Members<table> <tr><th>Method	
    /// </th><th>Description	
    /// </th></tr> <tr><td>IDirectInput8::ConfigureDevices </td><td>Displays property pages for connected input devices and enables the user to map actions to device controls.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.CreateDevice"/> </td><td>Creates and initializes an instance of a device based on a given globally unique identifier (<see cref="System.Guid"/>), and obtains an <see cref="SharpDX.DirectInput.Device"/> Interface interface. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.EnumDevices"/> </td><td>Enumerates available devices.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.EnumDevicesBySemantics"/> </td><td>Enumerates devices that most closely match the application-specified action map.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.FindDevice"/> </td><td>Retrieves the instance globally unique identifier (<see cref="System.Guid"/>) of a device that has been newly attached to the system. It is called in response to a Microsoft Win32 device management notification. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.GetDeviceStatus"/> </td><td>Retrieves the status of a specified device.	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.Initialize"/> </td><td>Initializes a DirectInput object. Applications normally do not need to call this method. The DirectInput8Create function automatically initializes the DirectInput object after creating it. 	
    /// </td></tr> <tr><td><see cref="SharpDX.DirectInput.DirectInput.RunControlPanel"/> </td><td>Runs Control Panel to enable the user to install a new input device or modify configurations.	
    /// </td></tr> </table>	
    /// </summary>	
    /// <remarks>	
    /// <p><see cref="SharpDX.DirectInput.DirectInput"/> supersedes the IDirectInput, IDirectInput2, and IDirectInput7 interfaces used in earlier versions of Microsoft DirectX.</p> <p><see cref="SharpDX.DirectInput.DirectInput"/> is an interface to a new class of object, represented by the class identifier CLSID_DirectInput8, and cannot be obtained by calling QueryInterface on an interface to objects of class CLSID_DirectInput. Instead, obtain the <see cref="SharpDX.DirectInput.DirectInput"/> interface by using the DirectInput8Create function.</p> <p>The LPDIRECTINPUT8 type is defined as a reference to the <see cref="SharpDX.DirectInput.DirectInput"/> interface:</p> <pre> typedef struct <see cref="SharpDX.DirectInput.DirectInput"/>    *LPDIRECTINPUT8;	
    /// </pre>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W']/*"/>	
    /// <msdn-id>ee417799</msdn-id>	
    /// <unmanaged>IDirectInput8W</unmanaged>	
    /// <unmanaged-short>IDirectInput8W</unmanaged-short>	
    [Guid("bf798031-483a-4da2-aa99-5d64ed369700")]
    public partial class DirectInput : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectInput.DirectInput"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public DirectInput(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectInput.DirectInput"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectInput.DirectInput(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectInput.DirectInput(nativePointer);
		}
        
        
        /// <summary>	
        /// Creates and initializes an instance of a device based on a given globally unique identifier (<see cref="System.Guid"/>), and obtains anIDirectInputDevice8 Interfaceinterface.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <param name="arg2">No documentation.</param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following: <see cref="SharpDX.DirectInput.ResultCode.DeviceNotRegistered"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NoInterface"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>, <see cref="SharpDX.DirectInput.ResultCode.OutOfMemory"/>.</p></returns>	
        /// <remarks>	
        /// <p>Calling this method with pUnkOuter = <c>null</c> is equivalent to creating the object by CoCreateInstance (&amp;CLSID_DirectInputDevice, <c>null</c>, CLSCTX_INPROC_SERVER, riid, lplpDirectInputDevice) and then initializing it with Initialize.</p> <p>Calling this method with pUnkOuter != <c>null</c> is equivalent to creating the object by CoCreateInstance (&amp;CLSID_DirectInputDevice, punkOuter, CLSCTX_INPROC_SERVER, &amp;IID_IUnknown, lplpDirectInputDevice). The aggregated object must be initialized manually.</p>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::CreateDevice']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.createdevice</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::CreateDevice([In] const GUID&amp; arg0,[Out] void** arg1,[In] IUnknown* arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::CreateDevice</unmanaged-short>	
        internal void CreateDevice(System.Guid arg0, out System.IntPtr arg1, SharpDX.ComObject arg2) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* arg1_ = &arg1)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0, arg1_, (void*)((arg2 == null)?IntPtr.Zero:arg2.NativePointer),((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Enumerates available devices.	
        /// </summary>	
        /// <param name="arg0"><dd> Device type filter. <p>To restrict the enumeration to a particular type of device, set this parameter to a DI8DEVTYPE_* value. See <see cref="SharpDX.DirectInput.DeviceInstance"/>. </p> <p>To enumerate a class of devices, use one of the following values. </p> <dl> <dt><see cref="SharpDX.DirectInput.DeviceClass.All"/></dt> <dd>All devices.</dd> <dt><see cref="SharpDX.DirectInput.DeviceClass.Device"/></dt> <dd>All devices that do not fall into another class.</dd> <dt><see cref="SharpDX.DirectInput.DeviceClass.GameControl"/></dt> <dd>All game controllers.</dd> <dt><see cref="SharpDX.DirectInput.DeviceClass.Keyboard"/></dt> <dd>All keyboards. Equivalent to <see cref="SharpDX.DirectInput.DeviceType.Keyboard"/>.</dd> <dt><see cref="SharpDX.DirectInput.DeviceClass.Pointer"/></dt> <dd>All devices of type <see cref="SharpDX.DirectInput.DeviceType.Mouse"/> and <see cref="SharpDX.DirectInput.DeviceType.ScreenPointer"/>.</dd> </dl> </dd></param>	
        /// <param name="arg1"><dd> Address of a callback function to be called once for each device enumerated. See DIEnumDevicesCallback.  </dd></param>	
        /// <param name="arg2"><dd> Application-defined 32-bit value to be passed to the enumeration callback each time it is called.  </dd></param>	
        /// <param name="arg3"><dd> Flag value that specifies the scope of the enumeration. This parameter can be one or more of the following values: <dl> <dt><see cref="SharpDX.DirectInput.DeviceEnumerationFlags.AllDevices"/></dt> <dd>All installed devices are enumerated. This is the default behavior. </dd> <dt><see cref="SharpDX.DirectInput.DeviceEnumerationFlags.AttachedOnly"/></dt> <dd>Only attached and installed devices. </dd> <dt><see cref="SharpDX.DirectInput.DeviceEnumerationFlags.ForceFeedback"/></dt> <dd>Only devices that support force feedback. </dd> <dt><see cref="SharpDX.DirectInput.DeviceEnumerationFlags.IncludeAliases"/></dt> <dd>Include devices that are aliases for other devices. </dd> <dt><see cref="SharpDX.DirectInput.DeviceEnumerationFlags.IncludeHidden"/></dt> <dd>Include hidden devices. For more information about hidden devices, see <see cref="SharpDX.DirectInput.Capabilities"/>. </dd> <dt><see cref="SharpDX.DirectInput.DeviceEnumerationFlags.IncludePhantoms"/></dt> <dd>Include phantom (placeholder) devices. </dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>All installed devices can be enumerated, even if they are not present. For example, a flight stick might be installed on the system but not currently plugged into the computer. Set the  dwFlags parameter to indicate whether only attached or all installed devices should be enumerated. If the <see cref="SharpDX.DirectInput.DeviceEnumerationFlags.AttachedOnly"/> flag is not present, all installed devices are enumerated. </p> <p>A preferred device type can be passed as a  dwDevType filter so that only the devices of that type are enumerated.</p> <p>On Microsoft Windows XP, DirectInput enumerates only one mouse and one keyboard device, referred to as the system mouse and the system keyboard.  These devices represent the combined output of all mice and keyboards respectively on a system. For information about how to read from multiple mice or keyboards individually on Windows XP, see the WM_INPUT documentation.</p> <table><tr><th>Note </th></tr><tr><td>The order in which devices are enumerated by DirectInput is not guaranteed.</td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::EnumDevices']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.enumdevices</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::EnumDevices([In] unsigned int arg0,[In] __function__stdcall* arg1,[In] void* arg2,[In] DIEDFL arg3)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::EnumDevices</unmanaged-short>	
        internal void EnumDevices(int arg0, SharpDX.FunctionCallback arg1, System.IntPtr arg2, SharpDX.DirectInput.DeviceEnumerationFlags arg3) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, arg1, (void*)arg2, unchecked((int)arg3),((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves the status of a specified device.	
        /// </summary>	
        /// <param name="arg0"><dd> Reference to (C++) or address of (C) the globally unique identifier (<see cref="System.Guid"/>) identifying the instance of the device whose status is being checked.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/> if the device is attached to the system, or <see cref="SharpDX.DirectInput.ResultCode.NotAttached"/> otherwise. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.Generic"/>, <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::GetDeviceStatus']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.getdevicestatus</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::GetDeviceStatus([In] const GUID&amp; arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::GetDeviceStatus</unmanaged-short>	
        internal SharpDX.Result GetDeviceStatus(System.Guid arg0) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0,((void**)(*(void**)_nativePointer))[5]);		
                return __result__;
            }
        }
        
        /// <summary>	
        /// Runs Control Panel to enable the user to install a new input device or modify configurations.	
        /// </summary>	
        /// <param name="arg0"><dd> Handle of the window to be used as the parent window for the subsequent user interface. If this parameter is <c>null</c>, no parent window is used.  </dd></param>	
        /// <param name="arg1"><dd> Currently not used and must be set to 0.  </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::RunControlPanel']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.runcontrolpanel</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::RunControlPanel([In] HWND arg0,[In] unsigned int arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::RunControlPanel</unmanaged-short>	
        internal void RunControlPanel(System.IntPtr arg0, int arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, arg1,((void**)(*(void**)_nativePointer))[6]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Initializes a 	
        /// DirectInput object. Applications normally do not need to call this method. TheDirectInput8Createfunction automatically initializes the DirectInput object after creating it.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.BetaDirectInputVersion"/>, <see cref="SharpDX.DirectInput.ResultCode.OldDirectInputVersion"/>.</p></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::Initialize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.initialize</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::Initialize([In] HINSTANCE arg0,[In] unsigned int arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::Initialize</unmanaged-short>	
        internal void Initialize(System.IntPtr arg0, int arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, arg1,((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// Retrieves the instance globally unique identifier (<see cref="System.Guid"/>) of a device that has been newly attached to the system. It is called in response to a Microsoft Win32  device management notification.	
        /// </summary>	
        /// <param name="arg0"><dd> Unique identifier of the device class for the device that the application is to locate. The application obtains the class <see cref="System.Guid"/> from the device arrival notification. For more information, see the documentation on the DBT_DEVICEARRIVAL event in the Microsoft Platform Software Development Kit (SDK).  </dd></param>	
        /// <param name="arg1"><dd> Name of the device. The application obtains the name from the device arrival notification.  </dd></param>	
        /// <returns><dd> Address of a variable to receive the instance <see cref="System.Guid"/> for the device, if the device is found. This value can be passed to <see cref="SharpDX.DirectInput.DirectInput.CreateDevice"/>.  </dd></returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::FindDevice']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.finddevice</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::FindDevice([In] const GUID&amp; arg0,[In] const wchar_t* arg1,[Out] GUID* arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::FindDevice</unmanaged-short>	
        public System.Guid FindDevice(System.Guid arg0, string arg1) {
            unsafe {
                IntPtr arg1_ = Utilities.StringToHGlobalUni(arg1);
                System.Guid arg2;
                arg2 = new System.Guid();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0, (void*)arg1_, &arg2,((void**)(*(void**)_nativePointer))[8]);		
                Marshal.FreeHGlobal(arg1_ );
                __result__.CheckError();
                return arg2;
            }
        }
        
        /// <summary>	
        /// Enumerates devices that most closely match the application-specified action map.	
        /// </summary>	
        /// <param name="arg0"><dd> String identifying the current user, or <c>null</c> to specify the user logged onto the system. The user name is taken into account when enumerating devices. A device with user mappings is preferred to a device without any user mappings. By default, devices in use by other users are not enumerated for this user. </dd></param>	
        /// <param name="arg1"><dd> Address of a <see cref="SharpDX.DirectInput.ActionFormat"/> structure that specifies the action map for which suitable devices are enumerated.  </dd></param>	
        /// <param name="arg2"><dd> Address of a callback function to be called once for each device enumerated. See DIEnumDevicesBySemanticsCallback.  </dd></param>	
        /// <param name="arg3"><dd> Application-defined 32-bit value to pass to the enumeration callback each time it is called.  </dd></param>	
        /// <param name="arg4"><dd> Flag value that specifies the scope of the enumeration. This parameter can be one or more of the following values.  <dl> <dt>DIEDBSFL_ATTACHEDONLY</dt> <dd>Only attached and installed devices are enumerated. </dd> <dt>DIEDBSFL_AVAILABLEDEVICES</dt> <dd>Only unowned, installed devices are enumerated. </dd> <dt>DIEDBSFL_FORCEFEEDBACK</dt> <dd>Only devices that support force feedback are enumerated. </dd> <dt>DIEDBSFL_MULTIMICEKEYBOARDS</dt> <dd>Only secondary (non-system) keyboard and mouse devices. </dd> <dt>DIEDBSFL_NONGAMINGDEVICES</dt> <dd>Only HID-compliant devices whose primary purpose is not as a gaming device. Devices such as USB speakers and multimedia buttons on some keyboards would fall within this value. </dd> <dt>DIEDBSFL_THISUSER</dt> <dd>All installed devices for the user identified by  ptszUserName, and all unowned devices, are enumerated. </dd> <dt>DIEDBSFL_VALID</dt> <dd>DIEDBSFL_VALID is also defined in Dinput.h, but is not used by applications. </dd> </dl> </dd></param>	
        /// <returns><p>If the method succeeds, the return value is <see cref="SharpDX.DirectInput.ResultCode.Ok"/>. If the method fails, the return value can be one of the following error values: <see cref="SharpDX.DirectInput.ResultCode.InvalidParam"/>, <see cref="SharpDX.DirectInput.ResultCode.NotInitialized"/>.</p></returns>	
        /// <remarks>	
        /// <p>The keyboard and mouse are enumerated last.</p> <table><tr><th>Note </th></tr><tr><td>The order in which devices are enumerated by DirectInput is not guaranteed.</td></tr></table>	
        /// </remarks>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInput8W::EnumDevicesBySemantics']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.idirectinput8.idirectinput8.enumdevicesbysemantics</msdn-id>	
        /// <unmanaged>HRESULT IDirectInput8W::EnumDevicesBySemantics([In] const wchar_t* arg0,[In] DIACTIONFORMATW* arg1,[In] __function__stdcall* arg2,[In] void* arg3,[In] unsigned int arg4)</unmanaged>	
        /// <unmanaged-short>IDirectInput8W::EnumDevicesBySemantics</unmanaged-short>	
        internal void EnumDevicesBySemantics(string arg0, ref SharpDX.DirectInput.ActionFormat arg1, SharpDX.FunctionCallback arg2, System.IntPtr arg3, int arg4) {
            unsafe {
                IntPtr arg0_ = Utilities.StringToHGlobalUni(arg0);
                var arg1_ = new SharpDX.DirectInput.ActionFormat.__Native();
                arg1.__MarshalTo(ref arg1_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0_, &arg1_, arg2, (void*)arg3, arg4,((void**)(*(void**)_nativePointer))[9]);		
                Marshal.FreeHGlobal(arg0_ );
                arg1.__MarshalFree(ref arg1_);
                __result__.CheckError();
            }
        }
    }
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect']/*"/>	
    /// <unmanaged>IDirectInputEffect</unmanaged>	
    /// <unmanaged-short>IDirectInputEffect</unmanaged-short>	
    [Guid("e7e1f7c0-88d2-11d0-9ad0-00a0c9a06e35")]
    public partial class Effect : SharpDX.ComObject {
        /// <summary>
        /// Initializes a new instance of the <see cref="SharpDX.DirectInput.Effect"/> class.
        /// </summary>
        /// <param name="nativePtr">The native pointer.</param>	
        public Effect(IntPtr nativePtr) : base(nativePtr) {
        }

		/// <summary>
		/// Performs an explicit conversion from <see cref="System.IntPtr"/> to <see cref="SharpDX.DirectInput.Effect"/>. (This method is a shortcut to <see cref="SharpDX.CppObject.NativePointer"/>) 
		/// </summary>
		/// <param name="nativePointer">The native pointer.</param>
		/// <returns>
		/// The result of the conversion.
		/// </returns>
		public static explicit operator SharpDX.DirectInput.Effect(IntPtr nativePointer)
		{
			return nativePointer == IntPtr.Zero ? null : new SharpDX.DirectInput.Effect(nativePointer);
		}
        
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::GetEffectGuid']/*"/>	
        /// <unmanaged>GetEffectGuid</unmanaged>	
        /// <unmanaged-short>GetEffectGuid</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectInputEffect::GetEffectGuid([Out] GUID* arg0)</unmanaged>
        public System.Guid Guid {
                get { System.Guid __output__; GetGuid(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::GetEffectStatus']/*"/>	
        /// <unmanaged>GetEffectStatus</unmanaged>	
        /// <unmanaged-short>GetEffectStatus</unmanaged-short>	
        /// <unmanaged>HRESULT IDirectInputEffect::GetEffectStatus([Out] DIEGES* arg0)</unmanaged>
        public SharpDX.DirectInput.EffectStatus Status {
                get { SharpDX.DirectInput.EffectStatus __output__; GetStatus(out __output__); return __output__; }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <param name="arg2">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::Initialize']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::Initialize([In] HINSTANCE arg0,[In] unsigned int arg1,[In] const GUID&amp; arg2)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::Initialize</unmanaged-short>	
        internal void Initialize(System.IntPtr arg0, int arg1, System.Guid arg2) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, (void*)arg0, arg1, &arg2,((void**)(*(void**)_nativePointer))[3]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::GetEffectGuid']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::GetEffectGuid([Out] GUID* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::GetEffectGuid</unmanaged-short>	
        internal void GetGuid(out System.Guid arg0) {
            unsafe {
                arg0 = new System.Guid();
                SharpDX.Result __result__;
                fixed (void* arg0_ = &arg0)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0_,((void**)(*(void**)_nativePointer))[4]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg1">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::GetParameters']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::GetParameters([Out] DIEFFECT* arg0,[In] DIEP arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::GetParameters</unmanaged-short>	
        public SharpDX.DirectInput.EffectParameters GetParameters(SharpDX.DirectInput.EffectParameterFlags arg1) {
            unsafe {
                SharpDX.DirectInput.EffectParameters arg0;
                var arg0_ = SharpDX.DirectInput.EffectParameters.__NewNative();
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_, unchecked((int)arg1),((void**)(*(void**)_nativePointer))[5]);		
                arg0 = new SharpDX.DirectInput.EffectParameters();
                arg0.__MarshalFrom(ref arg0_);
                __result__.CheckError();
                return arg0;
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::SetParameters']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::SetParameters([In] const DIEFFECT* arg0,[In] DIEP arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::SetParameters</unmanaged-short>	
        public void SetParameters(SharpDX.DirectInput.EffectParameters arg0, SharpDX.DirectInput.EffectParameterFlags arg1) {
            unsafe {
                var arg0_ = SharpDX.DirectInput.EffectParameters.__NewNative();
                arg0.__MarshalTo(ref arg0_);
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, &arg0_, unchecked((int)arg1),((void**)(*(void**)_nativePointer))[6]);		
                arg0.__MarshalFree(ref arg0_);
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <param name="arg1">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::Start']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::Start([In] unsigned int arg0,[In] DIES arg1)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::Start</unmanaged-short>	
        public void Start(int arg0, SharpDX.DirectInput.EffectPlayFlags arg1) {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0, unchecked((int)arg1),((void**)(*(void**)_nativePointer))[7]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::Stop']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::Stop()</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::Stop</unmanaged-short>	
        public void Stop() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[8]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::GetEffectStatus']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::GetEffectStatus([Out] DIEGES* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::GetEffectStatus</unmanaged-short>	
        internal void GetStatus(out SharpDX.DirectInput.EffectStatus arg0) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* arg0_ = &arg0)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0_,((void**)(*(void**)_nativePointer))[9]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::Download']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::Download()</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::Download</unmanaged-short>	
        public void Download() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[10]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::Unload']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::Unload()</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::Unload</unmanaged-short>	
        public void Unload() {
            unsafe {
                SharpDX.Result __result__;
                __result__= 
				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer,((void**)(*(void**)_nativePointer))[11]);		
                __result__.CheckError();
            }
        }
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <param name="arg0">No documentation.</param>	
        /// <returns>No documentation.</returns>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='IDirectInputEffect::Escape']/*"/>	
        /// <unmanaged>HRESULT IDirectInputEffect::Escape([In] DIEFFESCAPE* arg0)</unmanaged>	
        /// <unmanaged-short>IDirectInputEffect::Escape</unmanaged-short>	
        internal void Escape(ref SharpDX.DirectInput.EffectEscape arg0) {
            unsafe {
                SharpDX.Result __result__;
                fixed (void* arg0_ = &arg0)
                    __result__= 
    				SharpDX.DirectInput.LocalInterop.Calliint(_nativePointer, arg0_,((void**)(*(void**)_nativePointer))[12]);		
                __result__.CheckError();
            }
        }
    }
}
